import pandas as pd
import numpy as np
# Podatke preuzeti sa https://dice-database.org/downloads
data_B = pd.read_csv('B_CELL_NAIVE_TPM.csv')
data_M = pd.read_csv('MONOCYTES_TPM.csv')
data_T = pd.read_csv('CD4_NAIVE_TPM.csv')
def preprocess(data, class_label):
X = data.iloc[:, 3:]
X = X / X.sum() * 1000000
new_names = []
for value in data.iterrows():
new_names.append(value[1].Feature_name.split('.')[0])
class_labels = np.array([[f'{class_label}' for _ in range(X.shape[1])]])
labels_df = pd.DataFrame(data = class_labels, columns = X.columns)
data_tmp = X.copy()
data_tmp = data_tmp.append(labels_df)
data_T = data_tmp.T
new_cols = new_names + ['class']
new_df = pd.DataFrame(data=data_T.values, columns=new_cols)
return new_df
data_B_prep = preprocess(data_B, 0)
data_M_prep = preprocess(data_M, 1)
data_T_prep = preprocess(data_T, 2)
data_B_prep.to_csv('DATA_B.csv')
data_M_prep.to_csv('DATA_M.csv')
data_T_prep.to_csv('DATA_T.csv')
agl = AgglomerativeClustering(n_clusters=3)
agl.fit(X)
silhouette_score(X, agl.labels_)
homogeneity_score(y.ravel(), agl.labels_)
linked = linkage(X, 'ward')
labelList = agl.labels_
plt.figure(figsize=(10, 7))
dendrogram(linked,
orientation='top',
labels=labelList,
distance_sort='descending',
show_leaf_counts=True)
plt.show()